@ner
2年前 提问
1个回答

Web应用程序中存在安全风险的原因有什么

Ann
2年前

Web应用程序中存在安全风险的原因有:

  • 不成熟的安全意识:近年来,人们对Web应用程序安全问题的意识有所增强,但与网络和操作系统这些发展更加完善的领域相比,人们对Web应用程序安全问题的意识还远不够成熟。虽然大多数IT安全人员掌握了相当多的网络安全与主机强化基础知识,但他们对与Web应用程序安全有关的许多核心概念仍然不甚了解,甚至存有误解。当前,在其工作中,Web应用程序开发人员往往需要整合数十甚至数百个第三方数据包,导致他们无法集中精力研究基础技术。即使是经验丰富的Web应用程序开发人员,也经常会对所用的编程框架的安全性做出错误假设,或遇到一些对他们而言完全陌生的基本缺陷类型。

  • 独立开发:大多数Web应用程序都由企业自己的员工或合作公司独立开发,即使应用程序采用第三方组件,通常也是使用新代码将第三方组件进行自定义或拼凑在一起。在这种情况下,每个应用程序都各不相同,并且可能包含其独有的缺陷。这种情形与组织购买业内一流产品并按照行业标准指南安装的典型基础架构部署形成鲜明对照。

  • 欺骗性的简化:使用今天的Web应用程序和开发工具,一个程序员新手也能在短期内从头开始创建一个强大的应用程序。但是,在编写功能性代码与编写安全代码之间存在巨大的差异。许多Web应用程序由善意的个人创建,他们只是缺乏发现安全问题的知识与经验。

  • 迅速发展的威胁形势:Web应用程序攻击与防御研究发展相对不成熟,是一个正蓬勃发展的领域,其中新概念与威胁出现的速度比传统的技术要快得多。在客户端方面尤其如此,针对特定攻击的公认防御机制往往会在一些研究中失去作用,这些研究最终成就了新的攻击技巧。在项目开始之初就完全了解了当前威胁的开发团队,很可能到应用程序开发完成并部署后会面临许多未知的威胁。

  • 资源与时间限制:由于独立、一次性开发的影响,许多Web应用程序开发项目会受到严格的时间与资源限制。通常,设计或开发团队不可能雇用专职的安全专家,而且由于项目进程的拖延,往往要等到项目周期的最后阶段才由专家进行安全测试。为了兼顾各种要素,按期开发出稳定而实用的应用程序的要求往往使开发团队忽视不明显的安全问题。小型组织一般不愿多花时间评估一个新的应用程序。快速渗透测试通常只能发现明显的安全漏洞,而往往会遗漏比较细微、需要时间和耐心来发现的漏洞。

  • 技术上强其所难:Web应用程序使用的许多核心技术出现于万维网早期阶段,那时的状况与目前十分不同。从那以后,其功能已远远超越最初的设想,如在许多基于AJAX的应用程序中使用Java Script进行数据传输。随着对Web应用程序功能要求的变化,用于实现这种功能的技术已远远落后于其发展要求,而开发人员还是沿用原有的技术来满足新的需求。因此,这种做法造成的安全漏洞与无法预料的负面影响也就不足为奇了。

  • 对功能的需求不断增强:在设计应用程序时,开发人员主要考虑的是功能和可用性。曾经静态的用户资源现在包含社交网络功能,允许用户上传照片,对页面进行“维基”风格的编辑。以前,应用程序设计人员可以仅仅通过用户名和密码来创建登录功能,而现今的站点则包含密码恢复、用户名恢复、密码提示,以及在将来访问时记住用户名和密码的选项。无疑,这类站点声称能够提供各种安全功能,但实际上,这些功能不过是增大了该站点的受攻击面而已。

  • Web应用程序体系结构设计不当:Web应用程序向设计人员和开发人员提出了许多挑战。HTTP是无国界的,这意味着跟踪每位用户的会话状态将成为应用程序的责任。作为先导者,应用程序必须能够通过某种形式的身份验证来识别用户。由于所有后续授权决策都要基于用户的标识,因此,身份验证过程必须是安全的,同样必须很好地保护用于跟踪已验证用户的会话处理机制。设计安全的身份验证和会话管理机制仅仅是Web应用程序设计人员和开发人员所面临的众多问题中的两个方面。由于输入和输出数据要在公共网络上进行传输,因此还会存在其他挑战。防止参数操作和敏感数据泄漏是另一些重要问题。

Web应用程序安全的预防措施有以下几种:

  • 确定安全Web应用程序的重要体系结构和设计问题。

  • 设计时考虑重要部署问题。

  • 制定能增强Web应用程序输入验证的策略。

  • 设计安全的身份验证和会话管理机制。

  • 选择适当的授权模型。

  • 实现有效的账户管理方法,并保护用户会话。

  • 对隐私、认可、防止篡改和身份验证信息进行加密。

  • 防止参数操作。

  • 设计审核和记录策略。